# 编译器
CC = gcc

# 编译选项
CFLAGS = -Wall -std=c11

# 可执行文件名称
EXECUTABLE = ini_test

# 可执行文件输出目录
BIN_DIR = bin

# 目标文件输出目录
OBJ_DIR = build/obj

# 源文件
SRCS = src/main.c \
       src/lib_inih.c \
       src/lib_iniparser.c \
       libs/iniparser/iniparser.c \
       libs/iniparser/dictionary.c \
       libs/inih/ini.c

# 头文件目录
INCLUDES = -Ilibs/iniparser -Ilibs/inih

# 目标文件（将 .c 替换为 .o，并添加 OBJ_DIR 前缀）
OBJS = $(patsubst %.c, $(OBJ_DIR)/%.o, $(SRCS))

# 默认目标：编译可执行文件
all: $(BIN_DIR)/$(EXECUTABLE)

# 生成可执行文件
$(BIN_DIR)/$(EXECUTABLE): $(OBJS)
	@mkdir -p $(BIN_DIR)  # 确保 bin 目录存在
	$(CC) $(CFLAGS) $(INCLUDES) -o $@ $^

# 生成目标文件
$(OBJ_DIR)/%.o: %.c
	@mkdir -p $(dir $@)  # 确保目标文件目录存在
	$(CC) $(CFLAGS) $(INCLUDES) -c -o $@ $<

# 清理生成的文件
clean:
	rm -rf $(OBJ_DIR) $(BIN_DIR)

# 伪目标
.PHONY: all clean
